/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package helpdesk;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// import javax.servlet.http.HttpSession;
import javax.servlet.RequestDispatcher;

import java.sql.SQLException;
/**
 * Used for viewing another user's profile.
 *
 * Parameters:
 * userid - Which user profile
 *
 * Attributes for JSP:
 * 1) error - error message
 * 2) user - User that is being looked up
 *
 * @author thunkele
 */
public class ViewProfileServlet extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        RequestDispatcher rd;
        User user;

        String error = new String("");
        String userIdStr;
        int userId;

        try {
            if ((user = HelpdeskUtil.authenticateUser(request, response)) != null)
            {
                if (request.getMethod().equals("GET"))
                {

                    try
                    {
                        userIdStr = request.getParameter("userid");
                        if (userIdStr != null) {
                            try {
                                userId = Integer.parseInt(userIdStr);
                            } catch (NumberFormatException ex) {
                                error = "Invalid user id";
                                userId = -1;
                            }
                            
                            if (userId > 0) {
                                User theUser = User.getUserById(userId);
                                if (theUser == null)
                                    error = "Invalid user";
                                request.setAttribute("user", theUser);
                            }
                        } else {
                            error = "User not specified";
                        }
                        
                        
                    }
                    catch (SQLException ex)
                    {
                        error = "SQL exception: " + ex.getMessage();
                    }
                }

                request.setAttribute("error", error);
                rd = request.getRequestDispatcher("/WEB-INF/viewprofile.jsp");
                rd.forward(request, response);
            }
        } finally {
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
